/*
 * @Author: lirl
 * @Date: 2022-07-18 10:15:53
 * @Description: 菜单
 *  sidebars(Object) 存储侧边栏菜单列表, 其中对象的key为顶级菜单的id，value为顶级菜单的子菜单数组；在获取sidebar时，根据当前页面所处的顶级菜单来获取子菜单数组 - 当主导航与侧边栏都存在时，将侧边栏菜单数据放到该字段
 *  navbars(Array) 存储导航菜单列表 - 当主导航才单存在时将主导航放到该字段
 *  menus (Array) 侧边栏菜单，当主导航不存在、侧边栏导航存在时，将侧边栏菜单数据放到该字段
 *  menuRouteLoaded(Boolean) 存储侧边栏菜单加载状态
 */
const state = {
  // 侧边栏菜单，当主导航与侧边栏都存在时，将侧边栏菜单数据放到该字段
  sidebars: {},
  // 主导航菜单，当主导航菜单存在时将主导航放到该字段
  navbars: [],
  // 外链
  exteralNavbar: [],
  // 所有菜单
  menus: [],
  // 菜单是否已加载
  menuRouteLoaded: false,
  // 当前选中的主导航的pathId
  activeNavPathId: ''
};

const mutations = {
  // 添加菜单数据
  SIDEBAR_TREE: (states, bars) => {
    // 抑制原因：vuex 状态管理要求，需要将传入的对象stats进行修改
    // eslint-disable-next-line no-param-reassign
    states.sidebars = { ...bars };
  },
  // 更改菜单路由加载状态
  MENU_ROUTE_LOADED: (states, loaded) => {
    // 抑制原因：vuex 状态管理要求，需要将传入的对象stats进行修改
    // eslint-disable-next-line no-param-reassign
    states.menuRouteLoaded = loaded;
  },
  // 添加导航菜单数据
  NAV_BAR: (states, navbars) => {
    // 抑制原因：vuex 状态管理要求，需要将传入的对象stats进行修改
    // eslint-disable-next-line no-param-reassign
    states.navbars = [...navbars];
  },
  // 添加外链导航菜单数据
  EXTERAL_NAV_BAR: (states, exteralNavbars) => {
    // 抑制原因：vuex 状态管理要求，需要将传入的对象stats进行修改
    // eslint-disable-next-line no-param-reassign
    states.exteralNavbars = [...exteralNavbars];
  },
  MENUS: (states, menus) => {
    // 抑制原因：vuex 状态管理要求，需要将传入的对象stats进行修改
    // eslint-disable-next-line no-param-reassign
    states.menus = [...menus];
  },
  ACTIVE_NAV_PATH_ID: (states, payload) => {
    // 抑制原因：vuex 状态管理要求，需要将传入的对象stats进行修改
    // eslint-disable-next-line no-param-reassign
    states.activeNavPathId = payload;
  },
  DRAFT_MENUS: (states, draftMenus = []) => {
    // 抑制原因：vuex 状态管理要求，需要将传入的对象stats进行修改
    // eslint-disable-next-line no-param-reassign
    states.draftMenus = draftMenus;
  },
  ALL_MENUS: (states, allMenus = []) => {
    // 抑制原因：vuex 状态管理要求，需要将传入的对象stats进行修改
    // eslint-disable-next-line no-param-reassign
    states.allMenus = [...allMenus];
  }
};
export default {
  namespaced: true,
  state,
  mutations
};
